//index.js
import { userLogin } from '../../utils/api'
//获取应用实例
const app = getApp()

Page({
	data: {
		backUrl: '',
		userInfo: {},
		hasUserInfo: false,
		canIUse: wx.canIUse('button.open-type.getUserInfo')
	},
	toLogin() {
		// 登录
		wx.login({
			success: res => {
				// 发送 res.code 到后台换取 openId, sessionKey, unionId
				const params = {
					code: res.code,
					userInfo: this.data.userInfo
				}
				userLogin(params).then((res)=>{
					if(res.code === 200){
						wx.setStorageSync('userId', res.uid)
						app.globalData.uid = res.uid;
						if(this.data.backUrl){
							wx.redirectTo({
								url: this.data.backUrl
							})
						}else{
							wx.switchTab({
								url: '../index/index'
							})
						}
					}
				})
			}
		})
	},
	onLoad (res) {
		const pageData = { ...res };
		delete pageData.page;
		let newParams = ''
		for(let item in pageData) {
			if(item){
				newParams += `${item}=${pageData[item]}&`
			}
		}
		newParams = newParams.substring(0,newParams.length-1);
		if(res.page){
			this.setData({
				backUrl: res.page+'?'+newParams
			})
		}
		if (app.globalData.userInfo) {
			this.setData({
				userInfo: app.globalData.userInfo,
				hasUserInfo: true
			})
			this.toLogin();
		} else if (this.data.canIUse){
			// 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
			// 所以此处加入 callback 以防止这种情况
			app.userInfoReadyCallback = res => {
				if(res.userInfo){
					this.setData({
						userInfo: res.userInfo,
						hasUserInfo: true
					})
					wx.setStorageSync('userInfo', res.userInfo)
					this.toLogin();
				}
			}
		} else {
			// 在没有 open-type=getUserInfo 版本的兼容处理
			wx.getUserInfo({
				success: res => {
					if(res.userInfo){
						app.globalData.userInfo = res.userInfo
						this.setData({
							userInfo: res.userInfo,
							hasUserInfo: true
						})
						wx.setStorageSync('userInfo', res.userInfo)
						this.toLogin();
					}
				}
			})
		}
	},
	getUserInfo: function(e) {
		if(e.detail.userInfo){
			app.globalData.userInfo = e.detail.userInfo
			this.setData({
				userInfo: e.detail.userInfo,
				hasUserInfo: true
			})
			wx.setStorageSync('userInfo', e.detail.userInfo)
			this.toLogin();
		}
	}
})
